"""
自定义drf异常捕获函数
"""
from rest_framework.views import exception_handler
from rest_framework.response import Response
from django.db import DatabaseError

def my_exception_handler(exc, context):
    """
    捕获异常并处理
    :param exc: 异常对象
    :param context:
    :return: 正常捕获并处理了，则返回响应对象，否则返回None
    """

    # 1、先把异常交给drf异常处理函数处理
    res = exception_handler(exc, context)
    if res is not None:
        return res

    # 2、如果drf异常处理函数，无法处理，我们自己处理
    if isinstance(exc, ZeroDivisionError):
        return Response({"errmsg": "除数不能为零！"})

    if isinstance(exc, DatabaseError):
        return Response({'errmsg': "数据库错误！"})

    return None
